<?php

namespace frontend\controllers;

use Yii;
use frontend\models\User;
use frontend\models\UserSearch;
//use yii\web\Controller;
use yii\web\NotFoundHttpException;
use yii\filters\VerbFilter;
use frontend\models\SignupForm;
use \yii\helpers\Url;

/**
 * UserController implements the CRUD actions for User model.
 */
//class UserController extends Controller
class UserController extends SuperController {

	/**
	 * @inheritdoc
	 */
	public function behaviors() {
		return [
			'verbs' => [
				'class' => VerbFilter::className(),
				'actions' => [
					'logout' => ['post'],
				],
			],
		];
	}

	/**
	 * Lists all User models.
	 * @return mixed
	 */
	public function actionIndex() {
		$searchModel = new UserSearch();
		$dataProvider = $searchModel->search(Yii::$app->request->queryParams);

		return $this->render('index', [
					'searchModel' => $searchModel,
					'dataProvider' => $dataProvider,
		]);
	}

	/**
	 * Displays a single User model.
	 * @param integer $id
	 * @return mixed
	 */
	public function actionView($id) {
		return $this->render('view', [
					'model' => $this->findModel($id),
		]);
	}

	public function actionProfile() {
		if (Yii::$app->user->isGuest) {
			return $this->redirect(Url::toRoute('site/login'));
		} else {
			$id = Yii::$app->user->id;
		}
		return $this->render('profile', [
					'model' => $this->findModel($id),
		]);
	}

	/**
	 * Creates a new User model.
	 * If creation is successful, the browser will be redirected to the 'view' page.
	 * @return mixed
	 */
	public function actionCreate() {
//        $model = new User();
//
//        if ($model->load(Yii::$app->request->post()) && $model->save()) {
//            return $this->redirect([ 'view', 'id' => $model->id ]);
//        }
//        else {
//            return $this->render('create', [
//                        'model' => $model,
//            ]);
//        }

		$model = new SignupForm();
		if ($model->load(Yii::$app->request->post())) {
			$model = $model->signup();
			$model->setcreateTime();
			$model->setUpdateTime();
			if ($model->save()) {
				return $this->success('User/create');
			} else {
				
			}
//            }
		}

		return $this->render('signup', [
					'model' => $model,
		]);
	}

	/**
	 * Updates an existing User model.
	 * If update is successful, the browser will be redirected to the 'view' page.
	 * @param integer $id
	 * @return mixed
	 */
	public function actionUpdate($id) {
		if (Yii::$app->user->isGuest) {
			$this->redirect(Url::toRoute('site/login'));
		} else {
			$model = $this->findModel(Yii::$app->user->id);
		}
		if ($model->load(Yii::$app->request->post()) && $model->save()) {
			return $this->redirect(['view', 'id' => $model->id]);
		} else {
			return $this->render('update', [
						'model' => $model,
			]);
		}
	}

	public function actionReset($id) {
		if (Yii::$app->user->isGuest) {
			$this->redirect(Url::toRoute('site/login'));
		} else {
			$id = Yii::$app->user->id;
		}
		$model = User::findOne($id);
		$model->password_hash = '';
		if ($model->load(Yii::$app->request->post())) {
			$model->password_hash = Yii::$app->security->generatePasswordHash($model->password_hash);
			if ($model->save()) {
				return $this->success('User/view?id=' . $model->id);
			}
		} else {
			return $this->render('reset', [
						'model' => $model,
			]);
		}
	}

	/**
	 * Deletes an existing User model.
	 * If deletion is successful, the browser will be redirected to the 'index' page.
	 * @param integer $id
	 * @return mixed
	 */
	public function actionDelete($id) {
		$this->findModel($id)->delete();

		return $this->redirect(['index']);
	}

	/**
	 * Finds the User model based on its primary key value.
	 * If the model is not found, a 404 HTTP exception will be thrown.
	 * @param integer $id
	 * @return User the loaded model
	 * @throws NotFoundHttpException if the model cannot be found
	 */
	protected function findModel($id) {
		if (($model = User::findOne($id)) !== null) {
			return $model;
		} else {
			throw new NotFoundHttpException('The requested page does not exist.');
		}
	}


}
